/**
 * 发送get异步请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数
 * @param {string|undefined} type 返回的数据类型
 * @param {object} headers 自定义请求头
 * @returns promise
 */
 function get(url, params, type, headers = {}) {
    const p = new Promise((resolve, reject) => {
      const xhr = new XMLHttpRequest();
      xhr.onreadystatechange = () => {
        if (xhr.readyState === 4) {
          if (xhr.status === 200) {
            let res = xhr.responseText;
            if (type === "json") res = JSON.parse(res);
            resolve(res);
          } else {
            reject(xhr.status);
          }
        }
      };
      let temp = [];
      for (let key in params) {
        temp.push(`${key}=${params[key]}`);
      }
      xhr.open("get", `${url}?${temp.join("&")}`);
      for (let key in headers) {
        xhr.setRequestHeader(key, headers[key]);
      }
      xhr.send(null);
    });
  
    return p;
  }
  
  /**
   * 发送post异步请求
   * @param {string} url 请求地址
   * @param {object} params 请求参数
   * @param {string|undefined} type 返回的数据类型
   * @param {object} headers 自定义请求头
   * @returns promise
   */
  function post(url, params, type, headers = {}) {
    const p = new Promise((resolve, reject) => {
      const xhr = new XMLHttpRequest();
      xhr.onreadystatechange = () => {
        if (xhr.readyState === 4) {
          if (xhr.status === 200) {
            let res = xhr.responseText;
            if (type === "json") res = JSON.parse(res);
            resolve(res);
          } else {
            reject(xhr.status);
          }
        }
      };
      let temp = [];
      for (let key in params) {
        temp.push(`${key}=${params[key]}`);
      }
      xhr.open("post", url);
      xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded");
      for (let key in headers) {
        xhr.setRequestHeader(key, headers[key]);
      }
      xhr.send(temp.join("&"));
    });
  
    return p;
  }
  